home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- oopbase.c
-
- Provided by
- Silico-Magnetic Intelligence maker of Better-C CASE Tool
- 914 426-2610 FAX: 914 426-3152
-
-
- OOP Database demonstration program
-
- The following program shows the call sequence to
- the OOP Database Library routines.
-
-
- ************************************************************************/
- /************************************************************************
- + Unit Test Segment
- ************************************************************************/
- #include <stdio.h>
-
- #define Test_limit 100L
- #define KEY_STOP
-
- #define Test_message_1 "Better-C manages complexity."
- #define Test_message_2 "Better-C doubles productivity!"
- #define Create_bases "Creating two databases...."
- #define Inserting_records "Adding %ld records to each database...."
- #define Traverse_ascending "\nTraverse database object %d in ascending order..."
- #define Traverse_descending "\nTraverse database object %d in descending order..."
- #define Deleting_records "\nDeleting records from %d to %d from each database...."
- #define Reinserting_records "\nReinserting records from %d to %d into each database...."
- #define Access_records "\nAccess records randomly from %d to %d by %d in each database...."
-
- #define true 1
- #define false 0
- #define Line_len 81
- #define Line_feed printf("\n");
- #define Clear_screen system ("cls")
- #define Test_result "\n\nObject handle: %d. Object numeric value: %d.\n\nObject message: %s\n"
- #define Not_found "Record not found."
- #define File_1 "bctest1.db"
- #define File_2 "bctest2.db"
- #define Change_start 5
- #define Change_end 20
- #define Change_gap 2
- #define Key_pattern_1 "DB %d %5d: this is the KEY part"
- #define Key_pattern_2 "DB %d %5d: KEY string"
- #define Record_pattern "\n>%s|||%s<"
- #define Data_pattern_1 "DATA part %d...."
- #define Data_pattern_2 "DATA string %d ----"
- #define Base_header_1 "Better-C database sample 1 "
- #define Base_header_2 "Better-C database sample 2 "
-
- void db_key_stop()
- {
- #ifdef KEY_STOP
- getchar();
- #endif
- }
-
-
- void db_test();
- void db_traverse_ascending(int);
- void db_traverse_descending(int);
-
- void main() { db_test(); }
-
- void db_test()
- /*----------------------------------------------------------------------
- Title: Test database module by operating on two database objects
- -----------------------------------------------------------------------*/
- {
- int handle_1, handle_2;
- char key[ Line_len ], data[ Line_len];
- long i;
-
- Clear_screen;
-
- handle_start(); /* object handle init */
- db_start(); /* database init */
-
- printf(Create_bases); Line_feed;
- db_create( File_1, Base_header_1);
- db_create( File_2, Base_header_2);
- printf (Inserting_records, Test_limit);
- db_key_stop();
-
- handle_1 = db_open( File_1 );
- handle_2 = db_open( File_2 );
-
- for (i = 0L; i < Test_limit; i++)
- {
- sprintf(key, Key_pattern_1, handle_1, i);
- sprintf(data, Data_pattern_1, 2 * i);
- db_insert( handle_1, key, data);
- sprintf(key, Key_pattern_2, handle_2, i);
- sprintf(data, Data_pattern_2, 3 * i);
- db_insert( handle_2, key, data);
- }
-
- db_traverse_ascending(handle_1);
- db_traverse_ascending(handle_2);
-
- printf(Deleting_records, Change_start, Change_end);
- Line_feed; db_key_stop();
- for (i = Change_start; i <= Change_end; i++)
- {
- sprintf(key, Key_pattern_1, handle_1, i);
- db_delete(handle_1, key);
- sprintf(key, Key_pattern_2, handle_2, i);
- db_delete(handle_2, key);
- }
-
- db_traverse_ascending(handle_1);
- db_traverse_ascending(handle_2);
-
- printf(Reinserting_records, Change_start, Change_end);
- Line_feed; db_key_stop();
-
- for (i = Change_start; i <= Change_end; i++)
- {
- sprintf(key, Key_pattern_1, handle_1, i);
- sprintf(data, Data_pattern_1, 2 * i);
- db_insert( handle_1, key, data);
- sprintf(key, Key_pattern_2, handle_2, i);
- sprintf(data, Data_pattern_2, 3 * i);
- db_insert( handle_2, key, data);
- }
- db_traverse_ascending(handle_1);
- db_traverse_ascending(handle_2);
- db_traverse_descending(handle_1);
- db_traverse_descending(handle_2);
-
- db_close(handle_1);
- db_close(handle_2);
-
- handle_1 = db_open( File_1 );
- handle_2 = db_open( File_2 );
-
- printf(Access_records, Change_start, Change_end, Change_gap);
- Line_feed; db_key_stop();
- for (i = Change_start; i <= Change_end; i += Change_gap)
- {
- sprintf(key, Key_pattern_1, handle_1, i);
- if ( ( db_read_key( handle_1, key, data)) == true)
- printf(Record_pattern, key, data);
- else
- printf( Not_found);
- sprintf(key, Key_pattern_2, handle_2, i);
- if ( ( db_read_key( handle_2, key, data)) == true)
- printf(Record_pattern, key, data);
- else
- printf( Not_found);
- }
-
- Line_feed;
- printf(Access_records, Change_end, Change_start, Change_gap);
- Line_feed; db_key_stop();
- for (i = Change_end; i >= Change_start; i -= Change_gap)
- {
- sprintf(key, Key_pattern_1, handle_1, i);
- if ( ( db_read_key( handle_1, key, data)) == true)
- printf(Record_pattern, key, data);
- else
- printf( Not_found);
- sprintf(key, Key_pattern_2, handle_2, i);
- if ( ( db_read_key( handle_2, key, data)) == true)
- printf(Record_pattern, key, data);
- else
- printf( Not_found);
- }
-
- db_close(handle_1);
- db_close(handle_2);
-
- db_end(); /* deinit database */
- handle_end(); /* deinit object handle */
- Line_feed; db_key_stop();
- Clear_screen;
-
- }
-
- void db_traverse_ascending(int handle)
- /*----------------------------------------------------------------------
- Title: Traverse and print database in ascending order
- -----------------------------------------------------------------------*/
- {
- char key[ Line_len ], data[ Line_len];
-
- printf(Traverse_ascending, handle);
- Line_feed; db_key_stop();
- db_go_to_first(handle);
- while (db_read_next(handle, key, data) == true)
- printf(Record_pattern, key, data);
- Line_feed;
- }
-
- void db_traverse_descending(int handle)
- /*----------------------------------------------------------------------
- Title: Traverse and print database in descending order
- -----------------------------------------------------------------------*/
- {
- char key[ Line_len ], data[ Line_len];
-
- printf(Traverse_descending, handle);
- Line_feed; db_key_stop();
- db_go_to_last(handle);
- while (db_read_previous(handle, key, data) == true)
- printf(Record_pattern, key, data);
- Line_feed;
- }
-
- /************************************************************************
- End of Unit Test Segment
- ************************************************************************/
-
-
- /************************************************************************
- End of: Object-oriented module algorithms
- ************************************************************************/